Introduction to software Engineering and software process model Software Requirements Engineering and Analysis Estimation and Scheduling Design Engineering Risks and Configuration Management Software Testing

Introduction

Modelling Requirement Engineering

Establishing the Groundwork

Identifying Stakeholders

Recognizing Multiple viewpoint

Working towards collaboration

Ashking the first questions

Eliciting Requirement

Collaborative Requirement Gathering

Usage scenarios

Elicitation Work Product

Developing Use Cases

Building the requirements model

Elements of the Requirements Model

Negotiating requirements

Validating Requirement

Negotiation is a crucial aspect of software development, especially when it comes to defining project requirements. Let's dive into the art of negotiation using a simple example involving Lisa, a marketing manager, and Doug, a software engineering manager, who are discussing the features of a home security system called SafeHome.


The Scenario:


Lisa wants the SafeHome system to include Internet access as it adds a "gee whiz" appeal and is essential for their marketing campaign. However, Doug is concerned about meeting the deadline with the resources available. Let's see how they negotiate to find a solution.


The Negotiation Process:


1. Recognize it's Not a Competition:


  • Both Lisa and Doug need to understand that negotiation isn't about winning or losing. It's about finding a solution that benefits both parties.

  • Example: Lisa acknowledges Doug's concerns about resources, and Doug recognizes the importance of Internet access for the marketing campaign.


    2. Map Out a Strategy:


  • Lisa and Doug need to outline their objectives and how they plan to achieve them.

  • Example: Lisa wants Internet access for marketing purposes, while Doug prioritizes meeting the deadline and ensuring system security.


    3. Listen Actively:


  • Both parties need to listen to each other's concerns and perspectives without formulating responses prematurely.

  • Example: Lisa listens to Doug's explanation about resource constraints and considers its implications on the project timeline.


    4. Focus on Interests:


  • Instead of taking hard positions, Lisa and Doug should focus on the underlying interests driving their requests.

  • Example: Lisa emphasizes the importance of Internet access for marketing, while Doug highlights the need for security and resource allocation.


    5. Don't Make it Personal:


  • It's essential to separate the problem from personal feelings and focus on finding a solution.

  • Example: Lisa and Doug discuss the project requirements professionally, without making it personal.


    6. Be Creative:


  • Both parties should be open to exploring alternative solutions if they reach an impasse.

  • Example: Lisa suggests prioritizing Internet access for the first release while deferring additional functionality to subsequent releases.


    7. Be Ready to Commit:


  • Once an agreement is reached, both parties should commit to it and move forward.

  • Example: Lisa agrees to prioritize Internet access for the first release, understanding the constraints Doug faces.


    Conclusion:


    Through effective negotiation, Lisa and Doug can find a solution that meets both their needs. By understanding each other's concerns, listening actively, and being open to compromise, they can achieve a win-win outcome where SafeHome meets its marketing goals while staying within budget and timeline constraints.


    Key Takeaways:


    Negotiation is a collaborative process aimed at finding mutually beneficial solutions. By following negotiation best practices, stakeholders can address conflicts, prioritize requirements, and move forward with confidence in their project's success.

    Software


    Software refers to the set of programs, data, and instructions that enable computers to perform specific tasks or functions. It encompasses applications, operating systems, and utilities designed to fulfill user needs, enhancing productivity, communication, entertainment, and virtually all aspects of modern life through computational processes and data manipulation.


    Software Engineering


    Software Engineering is the disciplined application of principles, methods, and tools to develop, test, deploy, and maintain high-quality software systems. It involves systematic approaches to problem-solving, project management, and teamwork, aiming to meet user needs efficiently while adhering to standards and best practices throughout the software development lifecycle.